#ifndef _FOR_H_
#define _FOR_H_
#include "python3/PythonGrammar30TreeConstants.h"
#include "ast/stmtType.h"
#include "ast/exprType.h"
#include "ast/stmtType.h"
#include "ast/suiteType.h"
#include "AstTypes.h"
class IVisitor;
class For;
typedef QSharedPointer<For> ForPtr;

class For: public stmtType
{
public:
    explicit For(const exprTypePtr& target, const exprTypePtr& iter, const StmtTypeList& body, const suiteTypePtr& orelse, int nodeId=JJTFOR_STMT);
    virtual ~For();
    
    
    exprTypePtr target();
    void setTarget(const exprTypePtr& target);
    
    exprTypePtr iter();
    void setIter(const exprTypePtr& iter);
    
    StmtTypeList body();
    void setBody(const StmtTypeList& body);
    
    suiteTypePtr orelse();
    void setOrelse(const suiteTypePtr& orelse);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _target;
    exprTypePtr _iter;
    StmtTypeList _body;
    suiteTypePtr _orelse;
};




#endif